linux-04 Vim编辑器

一、vim编辑器

vim与vi的区别,vi为黑色,vim为红色

  1. 三种状态:
  • Command:任何输入都会作为编辑命令,而不会出现在屏幕上,任何输入都引起立即反映

  • Insert:任何输入的数据都置于编辑寄存器,按ESC,可跳回command方式

  • Escape:以':'或者'/'为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别的指令

离开命令

  • ZZ 保存当前文件并退出Vi

  • :q! 离开vi,并放弃刚在缓存区编辑的内容

  • :wq 将缓冲区内的资料写入磁盘中,并离开vi

  • :x 同:wq(:X是文件加密,需要区分一下)

进入输入模式

  • a 光标之后输入

  • A 行末输入

  • i 光标之前输入

  • I 行首输入

  • o 向下新增一行

  • O 向上新增一行

删除、修改、撤销

  • x 删除光标下的字

  • X 删除光标之前的字

  • D 删除当前光标至行尾的内容

  • dd 删除整行

  • dgg 删除当前光标至文件头的内容

  • :10,20d 删除第10行至20行的资料

  • :10d 删除第10行

  • :%d 删除整个编辑缓冲区

  • cc 修改整行的内容

  • r 修改当前光标的文字

  • R 进入修改模式直到ESC退出为止

  • u 恢复最后一个指令之前的结果

  • U 恢复光标该行的所有改变

  • ctrl+r 恢复撤消前的内容

光标移动

  • m<a-z> 设置书签<a-z>
  • <a-z> 移至书签<a-z>
  • 0 移至行首
  • $ 移至行末
  • e 移到下个字的最后一个字母
  • w 移动到下个字的第一个字母
  • b 移动到上个字的第一个字母
  • ^ 移至该行的第一个字
  • H 移至视窗的第一行
  • M 移至视窗的中间那行
  • L 移至视察的最后一行
  • G 移至该文件的最后一行
  • + 移至下一列的第一个字
  • - 移至上一列的第一个字
  • :n 移至该文件的第n列
  • n+ 移至光标所在位置之后的第n列
  • n- 移至光标所在位置之前的第n列
  • <ctrl><g> 显示该行之行号、文件名称、文件中最末行之行号、光标所在行号占总行号之百分比

视窗的移动

  • ctrl+f 视窗往下卷一页
  • ctrl+b 视窗往上卷一页
  • ctrl+d 视窗往下卷半页
  • ctrl+u 视窗往上卷半页
  • ctrl+e 视窗往下卷一行
  • ctrl+y 视窗往上卷一行

选择、复制、剪切、删除

  • v 从光标当前位置开始,经过的地方会被选中,再按v结束
  • V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束
  • ctrl+v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按ctrl+v结束
  • ggVG 选中全部的文本,其中gg为跳到行首,V选中整行,G末尾
  • d 剪切
  • y 复制
  • p 粘贴
  • yy 复制光标当前行

查找与替换

  • /字串 光标之后寻找
  • ?字串 光标之前寻找
  • n 往下继续寻找下一个相同的字串
  • N 往上继续寻找下一个相同的字串
  • % 查找'(',')','{','}'的配对符
  • s 搜寻某行列范围
  • g 搜寻整个编辑缓冲区的资料
  • :1,$s/old/new/g 将文件中所有old改成new
  • :10,20s/%^/ / 将10行至20行资料的最前面插入5个空白
  • /字符串 后边输入查询内容可保存至缓冲区,可用箭头上下进行以往内容选择
  • 将光标移动在选定单词下方按*,则可以选中此单词作为查询字符

环境的设定

  • :set all 可设置的环境变量列表
  • :set 环境变量的当前值
  • :set nu 显示行号
  • :set nonu 取消行号设定。
  • :set ai 自动内缩。
  • :set noai 取消自动内缩。

(vim)

  • :set ruler 会在屏幕右下角显示当前光标所处位置,并随光移动而改变,占用屏幕空间较小,使用也比较方便,推荐使用。
  • :set hlsearch 在使用查找功能时,会高亮显示所有匹配的内容。
  • :set nohlsearch 关闭此功能。
  • :set incsearch 使Vim在输入字符串的过程中,光标就可定位显示匹配点。
  • :set nowrapscan 关闭查找自动回环功能,即查找到文件结尾处,结束查找;默认状态是自动回环